今日對話:怎麼儲存「有對應關係」的資料?
我的 Prompt(提示詞):
「我已經學會 List、Tuple 和 Set 了。請用白話文告訴我 Python 的『Dictionary(字典)』是什麼?什麼是 Key-Value?另外,請教我如何建立字典,以及怎麼安全地從字典裡拿資料?」
AI 導師這次用了一個大家都很熟悉的「通訊錄」比喻,完美解釋了字典的運作邏輯:
什麼是 Dictionary?
想像一本真實的字典或手機通訊錄。當你想找某個人的電話時,你會先找他的「名字」,然後對應出他的「號碼」。
在 Python 中,字典就是由這種 「鍵(Key)」與「值(Value)」 成雙成對組成的資料結構。
語法與規則
語法:跟 Set 一樣使用大括號 {},但裡面放的是 Key: Value 的組合,中間用冒號隔開。例如:{"name": "Alex", "age": 20}。
Key(鍵)的規則:必須是獨一無二且不可變的(通常用字串或整數)。就像通訊錄裡不能有兩個完全一模一樣的名字,不然 Python 會不知道你要找哪一個。
Value(值)的規則:非常自由!裡面可以裝字串、數字,甚至裝另一個 List 或字典。
一般拿法:字典["Key"]。缺點是如果這個 Key 不存在,程式會當機(KeyError)。
AI 推薦的安全拿法:字典.get("Key")。如果 Key 不存在,它只會默默回傳一個 None(沒有東西),程式依然能平安運作,甚至還可以設定找不到時的預設值!
看懂了 Key 和 Value 的關係後,我在 VS Code 建立了 day10.py檔案,寫了一個「遊戲玩家狀態面板」,順便測試怎麼把字典跟前幾天學的 for 迴圈結合起來:
python
#1. 建立一個字典 (Key: Value)
player_profile = {
"name": "Arthur",
"level": 15,
"job": "騎士",
"skills": ["劍術", "防禦", "治癒"] # Value 可以是一個 List!
}
print(f"玩家名稱:{player_profile['name']}")
#2. 安全拿資料示範 (.get)
#print(player_profile['guild']) # 這樣寫如果沒有 guild 會直接報錯當機
print(f"玩家公會:{player_profile.get('guild', '無公會')}") # 安全拿法,找不到就給預設值
#3. 新增與修改資料
player_profile["level"] = 16 # 修改:Key 存在,直接更新 Value
player_profile["guild"] = "獅心騎士團" # 新增:Key 不存在,直接新增一組
print(f"\n升級後的面板:{player_profile}")
#4. 迴圈走訪字典的絕招 (.items())
print("\n--- 玩家詳細屬性列表 ---")
#使用 .items() 可以同時把 Key 和 Value 抓出來
for key, value in player_profile.items():
print(f"【{key}】: {value}")
這幾天一口氣把 Python 的四大容器全部收服了。